/*-----------------------------------------+      
|   @@@@@@@@@        @@@@@    @@@@@  @@@@@ |      
|   @@@@@@@@@@     @@@@@@@@   @@@@@  @@@@@ |      
|    @@     @@    @@@    @@@   @@    @@@   |      
|    @@     @@   @@@      @@   @@  @@@     |      
|    @@    @@    @@       @@   @@ @@@      |      
|    @@@@@@@    @@        @@   @@@@@@      |      
|   @@@@@@@@@   @@        @@  @@@@@@@@     |      
|   @@     @@@  @@       @@   @@@  @@@     |      
|   @@      @@  @@      @@@   @@    @@@    |      
|   @@      @@  @@@    @@@    @@     @@    |      
| @@@@@@@@@@@    @@@@@@@@   @@@@@@   @@@@  |      
| @@@@@@@@@@      @@@@@     @@@@@@    @@@  |      
+-----------------------------------------*/

//------------------------------------------------------------
//	Include 
//------------------------------------------------------------
#include "GeneralFactory.h"

//------------------------------------------------------------
//	Implement
//------------------------------------------------------------

//------------------------------------------------------------
GeneralFactory::GeneralFactory( void )
{
	// nothing here
}
//------------------------------------------------------------
GeneralFactory::~GeneralFactory( void )
{
	// nothing here
}
//------------------------------------------------------------
bool GeneralFactory::Register( const char *pType, tCreator aCreator )
{
	string str = string( pType );
	return m_Creators.insert( make_pair( str, aCreator )).second;
}
//------------------------------------------------------------
void *GeneralFactory::Create( const char *pType )
{
	tCreatorMap::iterator iter = m_Creators.find( string( pType ) ); 

	if( m_Creators.end() != iter )
	{
		tCreator aCreator = (*iter).second;
		return aCreator();
	}
	else
	{
		return NULL;
	}
}
//------------------------------------------------------------
